package com.dhecp.project.system.mapper;

import java.util.List;
import java.util.Map;

import com.dhecp.core.genericDao.GenericDao;
import com.dhecp.project.system.domain.SysModuleNotice;

/**
 * 通知 数据层
 * @author DH-Xxj
 * @version 2020年4月24日
 */
public interface SysModuleNoticeMapper extends GenericDao<SysModuleNotice, String>{

	/**
	 * 查询未读通知数
	 * @param cUser 必要参数：查询用户
	 * @return int - taskCount
	 * @author DH-Xxj
	 */
	int selectWds(Map<String, Object> params);
	
	/**
	 * 查询未读通知
	 * @param cUser 必要参数：查询用户
	 * @return List - SysModuleNotice
	 * @author DH-Xxj
	 */
	List<SysModuleNotice> selectWd(Map<String, Object> params);

	/**
	 * 查询已读通知
	 * @param cUser 必要参数：查询用户
	 * @return List - SysModuleNotice
	 * @author DH-Xxj
	 */
	List<SysModuleNotice> selectYd(Map<String, Object> params);
	
	/**
	 * 查询当前用户是发送人
	 * @param cUser 必要参数：查询用户
	 * @return List - SysModuleNotice
	 * @author DH-Xxj
	 */
	List<SysModuleNotice> selectFs(Map<String, Object> params);
	
	/**
	 * 创建通知
	 * @param SysModuleNotice 通知 实体
	 * @param buser		必要属性：通知发起人编号
	 * @param pGuid		必要属性：单据guid或nid
	 * @param moduleTable	必要属性：功能唯一标识（同一功能有多个不同通知时可加后缀区分，与存储过程中对应即可）
	 * @param createTime	可选属性：通知发起时间
	 * @param limitTime		可选属性：通知处理期限
	 * @return 
	 */
	int insertNotice(SysModuleNotice moduleNotice);
	
	/**
	 * 修改通知状态
	 * @param moduleNotice 通知 实体
	 * @param guid		必要属性：行唯一值
	 * @param taskState	必要属性：状态
	 * @param dealTime	必要属性：阅读时间
	 * @return
	 * @author DH-Xxj
	 */
	int updateTaskState(SysModuleNotice moduleNotice);

	/**
	 * 查询已绑定企业微信账号并且尚未发送的未读通知
	 * @param cUser 必要参数：查询用户
	 * @return List
	 */
	List<Map<String, Object>> selectWdWithWeChatId();
	/**
	 * 修改发送企业微信应用消息标志
	 * @param guid		必要属性：行唯一值
	 * @return
	 */
	int updateNoticeWxSendFlag(Map<String, Object> params);
}
